#pragma once

#include "CNoParentShareableDependencyObject.h"
#include "XamlPropertyToken.h"

class CDependencyPropertyProxy :
	public CNoParentShareableDependencyObject
{
public: 
	CDependencyPropertyProxy(CCoreServices * pCore);
protected: 
	CDependencyPropertyProxy();
public: 
	static HRESULT Create(CDependencyObject * * ppObject, CREATEPARAMETERS * pCreate);
	HRESULT FromString(CREATEPARAMETERS * pCreate);
	virtual ~CDependencyPropertyProxy();
private: 
	XBOOL m_bIgnoreForGetPropertyValue;
public: 
	XUINT32 m_nManagedPropertyIndex;
	XUINT32 m_nCorePropertyIndex;
	struct XamlPropertyToken m_propertyToken;
	virtual XUINT32 GetTypeIndex() const;
	XBOOL PropertyIsManaged();
	XUINT32 GetPropertyIndex();
	XUINT32 GetCorePropertyIndex();
	XBOOL IsEqual(CDependencyPropertyProxy * pDependencyPropertyProxy);
	void SetIgnoreForGetPropertyValue(XBOOL bIgnoreForGetPropertyValue);
	XBOOL GetIgnoreForGetPropertyValue();
};